<!DOCTYPE html>
<html lang="zh-CN">
    <head>
  <!-- 元数据 -->
  <meta charset="utf-8">
  <link rel="icon" href="">
  <title>计算机组成原理笔记（第四章）（中） | ALgarth's blog</title>
  <meta name="author" content="ALgarth" />
  <meta http-equiv="Cache-Control" content="no-transform" />
  <meta http-equiv="Cache-Control" content="no-siteapp" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="robots" content="index,follow" />
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
  <meta name="format-detection" content="telphone=no, email=no" />
  
    <meta name="keywords" content="计算机组成原理" />
  
  <meta name="description" content="老规矩，上开头！！  突然意识到该写一份计算机组成原理的笔记 那就写呗 为的是方便我个人的复习以及对读者进行启发 目录根据《计算机组成原理（第二版）》唐朔飞奶奶的的那本书来的 内容涵盖并结合书中内容，练习题，“林北不能忍了”学长的笔记，刘宏伟老师MOOC  计算机组成原理（第四章）（中）本节分为以下部分  1.分类和层次结构 2.主存 3.缓存 4.辅存  这次重点写一下汉明码和cache的部分，">
<meta property="og:type" content="article">
<meta property="og:title" content="计算机组成原理笔记（第四章）（中）">
<meta property="og:url" content="http://algarth.github.io/2020/11/02/organization4/index.html">
<meta property="og:site_name" content="ALgarth&#39;s blog">
<meta property="og:description" content="老规矩，上开头！！  突然意识到该写一份计算机组成原理的笔记 那就写呗 为的是方便我个人的复习以及对读者进行启发 目录根据《计算机组成原理（第二版）》唐朔飞奶奶的的那本书来的 内容涵盖并结合书中内容，练习题，“林北不能忍了”学长的笔记，刘宏伟老师MOOC  计算机组成原理（第四章）（中）本节分为以下部分  1.分类和层次结构 2.主存 3.缓存 4.辅存  这次重点写一下汉明码和cache的部分，">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="http://algarth.github.io/null">
<meta property="article:published_time" content="2020-11-02T11:45:18.000Z">
<meta property="article:modified_time" content="2020-11-25T10:45:53.924Z">
<meta property="article:author" content="ALgarth">
<meta property="article:tag" content="计算机组成原理">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http://algarth.github.io/null">
<meta name="twitter:site" content="@null">
  
  <!-- 站点验证相关 -->
  
    
    
    
  
  <!-- 样式表文件 -->
  <link rel="stylesheet" id="kratos-css" href="/css/kratosr.min.css" type="text/css" media="all">
  <link rel="stylesheet" id="highlight-css" href="/css/highlight.min.css" type="text/css" media="all">
  <link rel="stylesheet" id="fontawe-css" href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css" type="text/css" media="all">
  <link rel="stylesheet" id="nprogress-css" href="https://cdn.jsdelivr.net/npm/nprogress@0.2.0/nprogress.min.css" type="text/css" media="all">
  
  
  
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css">
  
  
    <link rel="stylesheet" id="darkmode-css" href="/css/kr-dark.min.css" type="text/css" media="all">
  
  <!-- 不得不预先加载的一些JS文件 -->
  <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js"></script>
  
    <script src="https://cdn.jsdelivr.net/npm/qrcode_js@1.0.0/qrcode.min.js"></script>
  
  
<meta name="generator" content="Hexo 5.2.0"><link rel="alternate" href="/atom.xml" title="ALgarth's blog" type="application/atom+xml">
</head>


    <body class="custom-background">
        <div id="kratos-wrapper">
    <div id="kratos-page">
        <div id="kratos-header">
            <div class="nav-toggle"><a class="kratos-nav-toggle js-kratos-nav-toggle"><i></i></a></div>
            <header id="kratos-header-section">
                <div class="container">
                    <div class="nav-header">
                        <div class="color-logo"><a href="/">ALgarth&#39;s blog</a></div>
                        <nav id="kratos-menu-wrap">
                            <ul id="kratos-primary-menu" class="sf-menu">
                                
                                    
                                        <li><a href="/"><i class="fa fa-home"></i>首页</a></li>
                                    
                                
                                    
                                        <li><a href="/archives/"><i class="fa fa-file"></i>档案馆</a></li>
                                    
                                
                                    
                                        <li>
                                            <a><i class="fa fa-link"></i>链接</a>
                                            <ul class="sub-menu">
                                                
                                                    
                                                
                                                    
                                                        <li><a target="_blank" rel="noopener" href="https://blog.csdn.net/algarth">作者博客</a></li>
                                                    
                                                
                                                    
                                                        <li><a target="_blank" rel="noopener" href="https://github.com/ALgarth">项目链接</a></li>
                                                    
                                                
                                            </ul>
                                        </li>
                                    
                                
                            </ul>
                        </nav>
                    </div>
                </div>
            </header>
        </div>
        <div class="kratos-start kratos-hero-2">
            <!-- <div class="kratos-overlay"></div> -->
            <div class="kratos-cover kratos-cover-2 text-center">
                <div class="desc desc2 animate-box">
                    <a href="/">
                        <h2>ALgarth&#39;s blog</h2> <br />
                        <span>欢迎捞到摸鱼仙人的博客呢_(:3」∠)_</span>
                    </a>
                </div>
            </div>
        </div>

        <div id="kratos-blog-post">
            <div class="container">
                <div class="row">
                    
        <div id="main">
            <section class="col-md-8">
    <article>
        <div class="kratos-hentry kratos-post-inner clearfix">
            <header class="kratos-entry-header">
                <h1 class="kratos-entry-title text-center">计算机组成原理笔记（第四章）（中）</h1>
                
                <div class="kratos-post-meta text-center">
                    <span>
                        <i class="fa fa-calendar"></i> 2020-11-02
                        <i class="fa fa-folder"></i> 分类于 
                        <i class="fa fa-user"></i> 作者 ALgarth
                        <i class="fa fa-edit"></i> 
                        
                        
                            ~3.69K
                        
                        字
                        
                    </span>
                </div>
            </header>
            <div class="kratos-post-content">
                
                    <div class="kratos-post-inner-toc">
                        <ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86%EF%BC%88%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%89%EF%BC%88%E4%B8%AD%EF%BC%89"><span class="toc-number">1.</span> <span class="toc-text">计算机组成原理（第四章）（中）</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%AD%98%E5%82%A8%E5%99%A8%E5%92%8CCPU%E7%9A%84%E9%93%BE%E6%8E%A5"><span class="toc-number">1.0.1.</span> <span class="toc-text">存储器和CPU的链接</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%B1%89%E6%98%8E%E7%A0%81"><span class="toc-number">1.0.2.</span> <span class="toc-text">汉明码</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%8F%90%E9%AB%98%E8%AE%BF%E5%AD%98%E9%80%9F%E5%BA%A6%E7%9A%84%E6%96%B9%E6%B3%95"><span class="toc-number">1.0.3.</span> <span class="toc-text">提高访存速度的方法</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E7%BC%93%E5%AD%98"><span class="toc-number">1.1.</span> <span class="toc-text">缓存</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%A6%82%E8%BF%B0"><span class="toc-number">1.1.1.</span> <span class="toc-text">概述</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%85%B6%E4%B8%80%EF%BC%9A%E6%98%A0%E5%B0%84"><span class="toc-number">1.1.2.</span> <span class="toc-text">其一：映射</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%85%B6%E4%BA%8C%EF%BC%9A%E6%9B%BF%E6%8D%A2"><span class="toc-number">1.1.3.</span> <span class="toc-text">其二：替换</span></a></li></ol></li></ol></li></ol>
                    </div>
                
                <hr />
                <p>老规矩，上开头！！</p>
<blockquote>
<p>突然意识到该写一份计算机组成原理的笔记</p>
<p>那就写呗</p>
<p>为的是方便我个人的复习以及对读者进行启发</p>
<p>目录根据《计算机组成原理（第二版）》唐朔飞奶奶的的那本书来的</p>
<p>内容涵盖并结合书中内容，练习题，“林北不能忍了”学长的笔记，刘宏伟老师MOOC</p>
</blockquote>
<h1 id="计算机组成原理（第四章）（中）"><a href="#计算机组成原理（第四章）（中）" class="headerlink" title="计算机组成原理（第四章）（中）"></a>计算机组成原理（第四章）（中）</h1><p>本节分为以下部分</p>
<blockquote>
<p>1.分类和层次结构</p>
<p>2.主存</p>
<p>3.缓存</p>
<p>4.辅存</p>
</blockquote>
<p>这次重点写一下汉明码和cache的部分，汉明码这种阳间东西，必须多说说。</p>
<p>本部分开始前感谢CSDN blogger Yonggie的文章，这篇文章启发性很强，这次的文章中我会尽量采取一个不同而特别的方法进行介绍汉明码部分</p>
<p>开始的部分接着上次主存来</p>
<h3 id="存储器和CPU的链接"><a href="#存储器和CPU的链接" class="headerlink" title="存储器和CPU的链接"></a>存储器和CPU的链接</h3><p>存储器和CPU的链接其实就是在讲芯片的扩展方法，这部分其实学起来应该是很有意思的一个部分</p>
<p>首先不按照课本定义的扩展而言，就拿老例子，那个16k * 1扩展到64k * 8来说明真正的扩展方法。</p>
<p>扩展的时候有四种线要进行考虑</p>
<blockquote>
<p>A：地址线</p>
<p>D：数据线</p>
<p>CS：片选线</p>
<p>WE：读写线</p>
</blockquote>
<p>扩展的维度也就只有两个，一个是地址线的扩展，一个是数据线的扩展</p>
<p><strong>首先我们看数据线的扩展：</strong></p>
<p>从例子来看，要从1位扩展到8位，我们只要拿8个这种1位的芯片，每次存储数据的时候，每一位做8位中的一部分就可以了。就是下图的意思</p>
<p><img src="/2020/11/02/organization4/%E6%95%B0%E6%8D%AE%E7%BA%BF%E6%89%A9%E5%B1%95.jpg" alt="数据线扩展"></p>
<p>在CS线的链接上，其实丝毫不用管，每次大家一起选择就完了，那不就直接一起连上CS不就完事了吗</p>
<p>WE其实和CS是一个意思，啥也不管就行</p>
<p><strong>其次是地址线的扩展：</strong></p>
<p>从例子来看，16k扩展到64k，其实就加了2根线，但是这两根线，需要选择4个芯片，那么其实两位表示4个内容，直接用二进制表示4个内容就可以了，所以加一个片选译码处理一下就行，如下图所示</p>
<p><img src="/2020/11/02/organization4/%E5%9C%B0%E5%9D%80%E7%BA%BF%E6%89%A9%E5%B1%95.jpg" alt="地址线扩展"></p>
<p>CS其实就需要操作一下了，CS在选择的时候是进行一种选择，所以要在片选译码之后，对于片选译码的每一种情况都进行单独连接CS。</p>
<p>WE还是不用考虑，直接连就行</p>
<h3 id="汉明码"><a href="#汉明码" class="headerlink" title="汉明码"></a>汉明码</h3><p>汉明码我一直想以一个很有意思的方法进行描述</p>
<p>首先从一个编程的小题目的简化形式开始引入</p>
<p>题意大致如下</p>
<blockquote>
<p>现在有一瓶解药，他被洒在了一个猪喝水的桶里，这个桶里的农药，如果猪喝掉之后，在0-15min内任意一个时间点均有可能死亡。现在有1000个相似的桶，也有m只猪，在15min（原题为1h）之内，问：最少用多少只猪可以检测出来？</p>
</blockquote>
<p>这个题的简化形式来看，一头猪只能检测两种情况，喝了毒药死或者不死可以理解为计算机中的二进制码，那么问题来了，一头猪可以检测多少桶？（假设毒药的桶恒为1）</p>
<p>必然是2桶，喝掉一桶，根据猪的情况就可以判定那一桶有毒对吧。我们扩展一下，两头猪可以检测多少桶？</p>
<p>4桶对吧，我们吧0-3这4个数全部二进制表示，一头喝掉第一位为1的所有桶，另一头喝掉第二位为1的。根据两头猪的4中表现就可以锁定有毒的一桶。</p>
<p>（这里把这个题原题说完，原题是1h之内，那其实一头猪可以检测5种情况，n头猪可以检测pow（5，n）的个桶，5^5&gt;1000，所以最少5头）</p>
<p>汉明码和这个问题有着异曲同工之处，我们有n位汉明码，n位检测pow(2,n)种情况，但是汉明码的问题在于，汉明码本身也是一个二进制，要放在数据中，因此自己会占一位空间</p>
<p>这里开始补充说明检测和纠错：</p>
<p><strong>一串二进制码，正常的时候出错2位即以上的概率很小，我们不妨假设只有可能出错一位，这其实和上面的农药问题一致了</strong></p>
<blockquote>
<p>一串二进制码，假设一共有4位，16种情况，如果其中一位出错，发生了0,1互换，他就会变成另一种操作数，为了防止这种情况，我们把其中的部分二进制码置空，这样改变一个二进制位就不会出现问题了，最小改变出错的改变量称为最小距离L</p>
<p>检错（D）：检错指的是当发生了错误之后，可以知道发生了错误，这点是通过之前章节的奇偶校验实现的，那么我们如果知道发生了错误，但是无法锁定是哪一个位置，那么这个最大值就成为检错位数</p>
<p>纠错（C）：跟检错差不多，但是我们能过发现是哪一位出错的，纠错的要求比较高，一般难以纠错，只能发现。即D&gt;=C</p>
</blockquote>
<p>而且有公式L-1=D+C</p>
<p>再加上汉明码也会出错，因此我们采取这样的保存汉明码的方法</p>
<p>我们在pow（2，i）的位置保存汉明码，每一个汉明码检测它自己位置上二进制为1的所有数据，而且通过奇偶校验配置汉明码位置的数据，如果奇偶校验出现了问题，只有一位错一定是汉明码出错，多位出错的话一定仅能锁定一位数据，确认出错的位置。</p>
<p>同时可以得出汉明码的长度关系，方便今后计算</p>
<p>pow(2,k)&gt;n+k其中，k为汉明码的个数，n为数据的个数。</p>
<p>这个式子里，n+k就是整个数据的长度，长度刚好小于整个汉明码所能检测出的个数</p>
<h3 id="提高访存速度的方法"><a href="#提高访存速度的方法" class="headerlink" title="提高访存速度的方法"></a>提高访存速度的方法</h3><p>其实提高访存的方法很简单，无非就是合理分配主存，多加主存扩展，迭代升级</p>
<p>下面是专业术语</p>
<blockquote>
<p>单体多字：分配主存的方法，每次取主存的内容的时候连续取4块邻接的内容，同时操作，缩短了单个操作所用的时钟周期</p>
<p>多体并行：用多个存储器，每次取内容的时候取多个存储器的内容，设计很复杂，不适合微型计算机应用</p>
<p>高性能存储芯片：直接迭代，不跟上面的方法多bb。课本上的例子是SDRAM，RDRAM，CDRAM</p>
</blockquote>
<h2 id="缓存"><a href="#缓存" class="headerlink" title="缓存"></a>缓存</h2><p>缓存部分其实讲的很草率，那我也就直接分为概述和两大重点就行了</p>
<h3 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h3><p>本章的概述说过，缓存-主存层次是为了解决主存和CPU的速度问题的，但是除了目前主存速度和CPU速度严重不匹配之外，还有一个窘境，就是CPU速度的迭代速度是主存的10倍，主存根本赶不上CPU</p>
<p>主存和cache中的内容分为地址内容和数据内容，我们把地址内容单独拿出来，剩余的数据内容分配一下，分为n个包，每个包保存的数据内容长度相同，同时，主存也按照相同的方式分配，两者的包大小相同，这样双方就可以进行交流了</p>
<p>我们先以读数据为例</p>
<p>CPU在读数据的时候，先询问缓存中有没有相应的主存的内容，如果有，那么直接用，没有，就从主存中拿数据，再看看cache的空间有没有满，满的话踢出去部分内容，把刚才的内容加入cache方便今后访问</p>
<p>我们把从缓存中访问数据，称为命中，否则没有命中，因此可以用命中次数占比（命中率）进行定量衡量</p>
<p>如果我们同时得知cache的访问速度和主存访问速度，那么我们可以算出整个程序的访问时间，这个时间称之为平均访问时间，最快的访问时间（只用cache的访问时间）和平均访问时间的比值称为访问效率</p>
<p>当然，不是说cache越大命中率越高越好，这也不全是经济因素束缚的，缓存越大，可能有些常用的数据会被不常用的数据经常替换，而且目前的缓存命中率已经在95%以上，扩大的性价比不高</p>
<p>那么我们看看写数据有没有什么不同</p>
<p>写数据的时候要考虑要不要数据写入cache还是主存的问题，其实一个写入的数据，无论怎样都要写入主存，而且要把cache作为中转站，根据写入时间的不同，分为以下两种</p>
<blockquote>
<p>写直达法：写入cache的时候直接写入主存</p>
<p>写回法：写入cache的时候先不写入主存，当数据被替换之后再写入主存</p>
</blockquote>
<p>为了改进cache，还有两种改进的方法：</p>
<blockquote>
<p>增加级数：使用功能两层cache，一层集成在芯片上称为片内缓存，放在外面的cache称为片外缓存</p>
<p>统一分立：指令和数据的cache分开存放或者统一存放，有些在一个操作没结束就急着缓存下一个数据的cache（超前缓存），必须采用分立缓存</p>
</blockquote>
<p>其实仔细品上面的内容，很容易发现，上面有两个重点没有交代清楚</p>
<p>1.主存和cache内容是如何映射的？</p>
<p>2.cache上内容的替换是怎么做的？</p>
<p>这两个问题正是后面要讲的两大重点</p>
<h3 id="其一：映射"><a href="#其一：映射" class="headerlink" title="其一：映射"></a>其一：映射</h3><p>映射有三种方法：直接映射，全相连映射，组相连映射</p>
<p>每种映射方法解决的核心都是同一个问题，由于cache内存和主存大小的差异引发的二者块的传送。我们不妨设cache一共可放C个快，主存可放M个（M&gt;&gt;C）</p>
<blockquote>
<p>直接映射：直接将M对C取模，每个M对应着取模之后位置的那个块。</p>
<p>全相连映射：啥都不管了，莽夫流，C中的每一个块和M中的每一个块都构建映射关系</p>
<p>组相连映射：取模+莽夫，我们先给定一个分组方式，将cache内部的块分成n组，每组包含相同的块数，之后我们将n用作直接映射的C，组外实现直接映射和主存建立联系，每一组内的块，和对应的主存内部的一组块建立全相连映射。（上述的n被称为路，二路组相连就是n=2）</p>
</blockquote>
<p>这三种映射方式的重点在于他们的主存地址</p>
<p>以下是这三种情况的图：</p>
<p>首先这三种情况中，总长度是一定的（=主存的字地址），块的大小一定，主存字块标记都是做差得到的。</p>
<p><img src="/2020/11/02/organization4/%E7%9B%B4%E6%8E%A5.jpg" alt="直接"></p>
<p>直接映射中，cache标记就是cache的块数对应的地址线数</p>
<p><img src="/2020/11/02/organization4/%E5%85%A8%E7%9B%B8%E8%BF%9E.jpg" alt="全相连"></p>
<p>全相连就不用区分了，懒人爱了</p>
<p><img src="/2020/11/02/organization4/%E7%BB%84%E7%9B%B8%E8%BF%9E.jpg" alt="组相连"></p>
<p>组相连的组地址是指划分了组之后剩余的cache块数对应的地址线数</p>
<h3 id="其二：替换"><a href="#其二：替换" class="headerlink" title="其二：替换"></a>其二：替换</h3><p>替换策略一共有三种：</p>
<blockquote>
<p>FIFO：队列算法（先进先出）</p>
<p>LRU：近期最少使用</p>
<p>随机法</p>
</blockquote>
<p>第四章中的笔记到此结束</p>
<hr>
<p><em>我是ALgarth，如果有缘，我们下次再见。</em></p>
<p><em>图片来自网络，侵删。</em></p>
<p><em>本人拙笔草见，如果内容有误，请及时联系修改</em></p>

            </div>
            
                <div class="kratos-copyright text-center clearfix">
                    <h5>本作品采用 <a rel="license nofollow" target="_blank" href="http://creativecommons.org/licenses/by-sa/4.0/">知识共享署名-相同方式共享 4.0 国际许可协议</a> 进行许可</h5>
                </div>
            
            <footer class="kratos-entry-footer clearfix">
                
                    <div class="post-like-donate text-center clearfix" id="post-like-donate">
                    
                        <a class="donate" href="javascript:;"><i class="fa fa-bitcoin"></i> 打赏</a>
                    
                    
                        <a class="share" href="javascript:;"><i class="fa fa-share-alt"></i> 分享</a>
                        <div class="share-wrap" style="display: none;">
    <div class="share-group">
        <a href="javascript:;" class="share-plain qq" onclick="share('qq');" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-qq"></i>
            </div>
        </a>
        <a href="javascript:;" class="share-plain qzone" onclick="share('qzone');" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-star"></i>
            </div>
        </a>
        <a href="javascript:;" class="share-plain weixin pop style-plain" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-weixin"></i>
            </div>
            <div class="share-int">
                <div class="qrcode" id="wechat-qr"></div>
                <p>打开微信“扫一扫”，打开网页后点击屏幕右上角分享按钮</p>
            </div>
        </a>
        <a href="javascript:;" class="share-plain weibo" onclick="share('weibo');" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-weibo"></i>
            </div>
        </a>
        <a href="javascript:;" class="share-plain facebook style-plain" onclick="share('facebook');" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-facebook"></i>
            </div>
        </a>
        <a href="javascript:;" class="share-plain twitter style-plain" onclick="share('twitter');" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-twitter"></i>
            </div>
        </a>
    </div>
    <script type="text/javascript">
        $(()=>{
            new QRCode("wechat-qr", {
                text: "http://algarth.github.io/2020/11/02/organization4/",
                width: 150,
                height: 150,
                correctLevel : QRCode.CorrectLevel.H
            });
        });
        function share(dest) {
            const qqBase        = "https://connect.qq.com/widget/shareqq/index.html?";
            const weiboBase     = "https://service.weibo.com/share/share.php?";
            const qzoneBase     = "https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?";
            const facebookBase  = "https://www.facebook.com/sharer/sharer.php?";
            const twitterBase   = "https://twitter.com/intent/tweet?";
            const hostUrl       = "http://algarth.github.io/2020/11/02/organization4/";
            const title         = "「计算机组成原理笔记（第四章）（中）」";
            const excerpt       = `老规矩，上开头！！

突然意识到该写一份计算机组成原理的笔记
那就写呗
为的是方便我个人的复习以及对读者进行启发
目录根据《计算机组成原理（第二版）》唐朔飞奶奶的的那本书来的
内容涵盖并结合书中内容，练习题，“林北不能忍了”学长的笔记...`;
            let _URL;
            switch (dest) {
                case "qq"       : _URL = qqBase+"url="+hostUrl+"&title="+title+"&desc=&summary="+excerpt+"&site=cxpy";     break;
                case "weibo"    : _URL = weiboBase+"url="+hostUrl+"&title="+title+excerpt;                                 break;
                case "qzone"    : _URL = qzoneBase+"url="+hostUrl+"&title="+title+"&desc=&summary="+excerpt+"&site=cxpy";  break;
                case "facebook" : _URL = facebookBase+"u="+hostUrl;                                                        break;
                case "twitter"  : _URL = twitterBase+"text="+title+excerpt+"&url="+hostUrl;                                break;
            }
            window.open(_URL);
        };
    </script>
</div>
                    
                    </div>
                
                <div class="footer-tag clearfix">
                    <div class="pull-left">
                    <i class="fa fa-tags"></i>
                        <a class="tag-none-link" href="/tags/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86/" rel="tag">计算机组成原理</a>
                    </div>
                    <div class="pull-date">
                    <span>最后编辑：2020-11-25</span>
                    </div>
                </div>
            </footer>
        </div>
        
            <nav class="navigation post-navigation clearfix" role="navigation">
                
                <div class="nav-previous clearfix">
                    <a title=" 计算机组成原理笔记（第四章）（上）" href="/2020/10/27/organization3/">&lt; 上一篇</a>
                </div>
                
                
                <div class="nav-next clearfix">
                    <a title=" 计算机组成原理（第四章下和第五章开头）" href="/2020/11/25/organization5/">下一篇 &gt;</a>
                </div>
                
            </nav>
        
        
    </article>
</section>
        </div>
                
            <section id="kratos-widget-area" class="col-md-4 hidden-xs hidden-sm">
                
                    <aside id="krw-about" class="widget widget-kratos-about clearfix">
    
    <div class="photo-background"></div>
    <div class="photo-wrapper clearfix">
        <div class="photo-wrapper-tip text-center">
            <img class="about-photo" src="/images/avatar.webp" />
        </div>
    </div>
    <div class="textwidget">
        
            <ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86%EF%BC%88%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%89%EF%BC%88%E4%B8%AD%EF%BC%89"><span class="toc-number">1.</span> <span class="toc-text">计算机组成原理（第四章）（中）</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%AD%98%E5%82%A8%E5%99%A8%E5%92%8CCPU%E7%9A%84%E9%93%BE%E6%8E%A5"><span class="toc-number">1.0.1.</span> <span class="toc-text">存储器和CPU的链接</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%B1%89%E6%98%8E%E7%A0%81"><span class="toc-number">1.0.2.</span> <span class="toc-text">汉明码</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%8F%90%E9%AB%98%E8%AE%BF%E5%AD%98%E9%80%9F%E5%BA%A6%E7%9A%84%E6%96%B9%E6%B3%95"><span class="toc-number">1.0.3.</span> <span class="toc-text">提高访存速度的方法</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E7%BC%93%E5%AD%98"><span class="toc-number">1.1.</span> <span class="toc-text">缓存</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%A6%82%E8%BF%B0"><span class="toc-number">1.1.1.</span> <span class="toc-text">概述</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%85%B6%E4%B8%80%EF%BC%9A%E6%98%A0%E5%B0%84"><span class="toc-number">1.1.2.</span> <span class="toc-text">其一：映射</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%85%B6%E4%BA%8C%EF%BC%9A%E6%9B%BF%E6%8D%A2"><span class="toc-number">1.1.3.</span> <span class="toc-text">其二：替换</span></a></li></ol></li></ol></li></ol>
        
    </div>
</aside>
                
                    <!-- Moved to about.ejs -->
                
                    

                
                    
  <aside id="krw-tags" class="widget widget-kratos-tags clearfix">
    <h4 class="widget-title"><i class="fa fa-tags"></i>标签聚合</h4>
      <div class="tag-clouds">
        <a href="/tags/OS/" style="font-size: 0.6em;">OS</a> <a href="/tags/c-%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E4%B8%8D%E5%85%A5%E9%97%A8/" style="font-size: 0.7em;">c++从入门到不入门</a> <a href="/tags/priority-queue/" style="font-size: 0.6em;">priority_queue</a> <a href="/tags/projectpool/" style="font-size: 0.6em;">projectpool</a> <a href="/tags/tmp/" style="font-size: 0.6em;">tmp</a> <a href="/tags/trailer/" style="font-size: 0.7em;">trailer</a> <a href="/tags/update/" style="font-size: 0.6em;">update</a> <a href="/tags/%E5%89%8D%E8%A8%80/" style="font-size: 0.6em;">前言</a> <a href="/tags/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86/" style="font-size: 0.8em;">计算机组成原理</a> <a href="/tags/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86%E6%B1%87%E6%80%BB/" style="font-size: 0.6em;">计算机组成原理汇总</a> <a href="/tags/%E8%AE%A1%E7%BD%91/" style="font-size: 0.6em;">计网</a>
      </div>
  </aside>

                
                    
  <aside id="krw-posts" class="widget widget-kratos-poststab">
  <h4 class="widget-title"><i class="fa fa-file"></i>最新文章</h4>
  <div class="tab-content">
      <ul class="list-group">
        
        
          
          
            <a class="list-group-item" href="/2021/12/23/tmp/"><i class="fa  fa-book"></i> 小范围开源期末材料</a>
            
          
        
          
          
            <a class="list-group-item" href="/2021/10/30/OS/"><i class="fa  fa-book"></i> OS第一章</a>
            
          
        
          
          
            <a class="list-group-item" href="/2021/10/23/cnet/"><i class="fa  fa-book"></i> 计网第一章</a>
            
          
        
          
          
        
          
          
            <a class="list-group-item" href="/2021/10/19/projectpool/"><i class="fa  fa-book"></i> 计划进程池设定</a>
            
          
        
          
          
        
          
          
            <a class="list-group-item" href="/2020/12/31/organization-ex/"><i class="fa  fa-book"></i> 计算机组成原理汇总篇</a>
            
          
        
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
      </ul>
  </div>
  </aside>

                
            </section>
        
        </div>
    </div>
</div>
<footer>
    <div id="footer">
        <div class="kr-tool text-center">
            <div class="tool">
                
                    <div class="box search-box">
                        <a href="/search/">
                            <span class="fa fa-search"></span>
                        </a>
                    </div>
                
                
                    <div class="box theme-box" id="darkmode-switch">
                        <span class="fa fa-adjust"></span>
                    </div>
                
                
            </div>
            <div class="box gotop-box">
                <span class="fa fa-chevron-up"></span>
            </div>
        </div>
        <div class="container">
            <div class="row">
                <div class="col-md-6 col-md-offset-3 footer-list text-center">
                    <ul class="kratos-social-icons">
                        
                        <li><a href="mailto:algarth@163.com"><i class="fa fa-envelope"></i></a></li>
                        
                        
                        
                        
                        
                        <li><a target="_blank" rel="nofollow" href="https://github.com/ALgarth"><i class="fa fa-github"></i></a></li>
                        
                    </ul>
                    <ul class="kratos-copyright">
                        <div>
                            <li>&copy; 2022 ALgarth 版权所有.</li>
                            <li>本站已运行<span id="span_dt">Loading...</span></li>
                        </div>
                        <div>
                            <li>Theme <a href="https://github.com/Candinya/Kratos-Rebirth" target="_blank">Kratos:Rebirth</a></li>
                            <li>Made with&nbsp;<i class="fa fa-heart throb" style="color:#d43f57"></i>&nbsp;by <a href="https://candinya.com" target="_blank" rel="nofollow">Candinya</a>.</li>
                        </div>
                        <div>
                            <li>Powered by <a href="https://hexo.io" target="_blank" rel="nofollow">Hexo</a></li>
                            <li>Hosted on <a href="https://github.io" target="_blank">Github Pages</a></li>
                        </div>
                        <div>
                            
                            
                        </div>
                    </ul>
                </div>
            </div>
        </div>
    </div>
</footer>
</div>
</div>

        <script defer src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.4/dist/js/bootstrap.min.js"></script>
<script defer src="https://cdn.jsdelivr.net/npm/nprogress@0.2.0/nprogress.js"></script>
<script>const notMobile = (!(navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)));</script>

    <div>
        <canvas id="snow"></canvas>
        <script async type="text/javascript" src="/js/snow.min.js"></script>
    </div>

<script async src="/js/candy.min.js"></script>


    <script defer src="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js"></script>

<script defer src="https://cdn.jsdelivr.net/npm/clipboard@2.0.6/dist/clipboard.min.js"></script>
<script defer src="/js/kratosr.min.js"></script>
<script defer src="/js/pjax.min.js"></script>

    <script defer src="https://cdn.jsdelivr.net/npm/layui-src@2.5.5/dist/layui.all.js"></script>


    <script defer src="/js/kr-dark.min.js"></script>


    </body>
</html>